using Comm100.Framework.Infrastructure;
using Comm100.Framework.Tenancy;
using Bot.Domain.Entities;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Microsoft.Extensions.Configuration;

namespace Bot.Infrastructure
{
    public class BotDataContext : BaseDBContext
    {

        public BotDataContext(IConfiguration configuration, ITenancyResolver resolver)
            : base(configuration, resolver)
        {
        }
        public virtual DbSet<Chatbot> Chatbots { get; set; }
        public virtual DbSet<Category> Categorys { get; set; }
        public virtual DbSet<Intent> Intents { get; set; }
        public virtual DbSet<IntentQuestion> IntentQuestions { get; set; }
        public virtual DbSet<IntentQuestionSelectedKeyword> IntentQuestionSelectedKeywords { get; set; }
        public virtual DbSet<GreetingMessageInChannel> GreetingMessageInChannels { get; set; }
        public virtual DbSet<NoAnswerMessageInChannel> NoAnswerMessageInChannels { get; set; }
        public virtual DbSet<MessageAfterSeveralConsecutivePossibleAnswersInChannel> MessageAfterSeveralConsecutivePossibleAnswersInChannels { get; set; }
        public virtual DbSet<IntentAnswerInChannel> IntentAnswerInChannels { get; set; }
        public virtual DbSet<AnswerInChannelAuthenticationRequest> AnswerInChannelAuthenticationRequests { get; set; }
        public virtual DbSet<AnswerInChannelLocationRequest> AnswerInChannelLocationRequests { get; set; }
        public virtual DbSet<AnswerInChannelForm> AnswerInChannelForms { get; set; }
        public virtual DbSet<AnswerInChannelFormField> AnswerInChannelFormFields { get; set; }
        public virtual DbSet<AnswerInChannelPrompt> AnswerInChannelPrompts { get; set; }
        public virtual DbSet<PrebuiltEntity> PrebuiltEntitys { get; set; }       
        public virtual DbSet<Entity> Entitys { get; set; }
        public virtual DbSet<EntityKeyword> EntityKeywords { get; set; }
        public virtual DbSet<Webhook> Webhooks { get; set; }
        public virtual DbSet<QuickReply> QuickReplys { get; set; }
        public virtual DbSet<QuickReplyItem> QuickReplyItems { get; set; }
        public virtual DbSet<Response> Responses { get; set; }
        public virtual DbSet<Language> Languages { get; set; }   
        public virtual DbSet<ResponseButton> ResponseButtons { get; set; }
        public virtual DbSet<BackgroundJob> BackgroundJobs { get; set; }
        public virtual DbSet<EnabledChannel> EnabledChannels { get; set; }        
        public virtual DbSet<ChatbotLearningQuestion> ChatbotLearningQuestions { get; set; }
        public virtual DbSet<AgentAssistLearningQuestion> AgentAssistLearningQuestions { get; set; }
        public virtual DbSet<SynonymKeyword> SynonymKeywords { get; set; }
        public virtual DbSet<AgentAssist> AgentAssists { get; set; }
        public virtual DbSet<SelectedChatBot> SelectedChatBots { get; set; }
        public virtual DbSet<SelectedKB> SelectedKBs { get; set; }
        public virtual DbSet<Subscription> Subscriptions { get; set; }
        public virtual DbSet<DetectIntentRecord> DetectIntentRecords { get; set; }
        public virtual DbSet<NewBotRequest> NewBotRequests { get; set; }       
        public virtual DbSet<Package> Packages { get; set; }   
        public virtual DbSet<Image> Images { get; set; }
        public virtual DbSet<SmartTriggerCondition> SmartTriggerConditions { get; set; }
        public virtual DbSet<SmartTrigger> SmartTriggers { get; set; }
        public virtual DbSet<SmartTriggerAction> SmartTriggerActions { get; set; }
        public virtual DbSet<SmartTriggerActionSelectedAgent> SmartTriggerActionSelectedAgents { get; set; }
        public virtual DbSet<SmartTriggerActionSelectedDepartment> SmartTriggerActionSelectedDepartments { get; set; }
        public virtual DbSet<SmartTriggerActionSelectedVisitorSegment> SmartTriggerActionSelectedVisitorSegments { get; set; }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
        }
    }
}
